﻿
#include<string>
#include<iostream>
using namespace std;
#define _CRT_SECURE_NO_WARNINGS 1



//#include <iostream>
//using namespace std;
//
//int main() {
//    string str;
//    while (cin >> str) { // 注意 while 处理多个 case
//        if (str[0] >= 'a' && str[0] <= 'z')
//        {
//            str[0] = str[0] - 32;
//        }
//        cout << str[0];
//        for (auto e : str)
//        {
//            if (e == ' ')
//            {
//                e++;
//                cout << e;
//            }
//        }
//
//    }
//   
//
//}
////现在要做的是如何将小写字母转为大写字母

//#include <iostream>
//using namespace std;
//
//int main() {
//    int k;
//    cin >> k;
//    int a[5] = { 0 };
//    for (int i = 0; i < 5; i++)
//    {
//        scanf("%d", &a[i]);
//    }
//    int max = 0;
//    int tmp = 0;
//    int sum = 0;
//    while (k--)
//    {
//        for (int i = 0; i < 5; i++)
//        {
//            if ((a[i] % 2 == 0) && max <= a[i])
//            {
//                max = a[i];
//                tmp = i;
//            }
//            //现在的关键问题是我不能找到最大值对应的i值，
//        }
//        a[tmp] = max / 2;
//        max = 0;
//
//    }
//    for (int i = 0; i < 5; i++)
//    {
//        sum += a[i];
//    }
//    cout << sum << endl;
//
//}


//#include <iostream>
//using namespace std;
//
//int Fun(int i)
//{
//    if (i == 0)
//        return 0;
//    if (i == 1)
//        return 1;
//    if (i >= 2)
//        return Fun(i - 2) + Fun(i - 1);
//}
//
//int main() {
//    int n;
//    int t = 0;
//    while (cin >> n) { // 注意 while 处理多个 case
//        //宝贝，要求范围呀，关键是范围怎么求呀？
//        while (!(n > Fun(t) && n < Fun(t + 1)))
//        {
//            t++;
//        }
//        int ret1 = n - Fun(t);
//        int ret2 = Fun(t + 1) - n;
//        if (ret1 >= ret2)
//        {
//            cout << ret2 << endl;
//        }
//        else
//        {
//            cout << ret1 << endl;
//        }
//    }
//}


//#include <iostream>
//using namespace std;
//
//int Fun(int i) {
//    int a = 0; int b = 1;
//    int ret = 0;
//    if (i == 0)
//        return 0;
//    if (i == 1)
//        return 1;
//    if (i >= 2)
//    {
//        for (int f = 2; f <= i; f++)
//        {
//            ret = a + b;
//            a = b;
//            b = ret;
//        }
//        return ret;
//    }
//    return 0;
//}
//
//int main() {
//    int n;
//    int t = 0;
//    while (cin >> n) { // 注意 while 处理多个 case
//        //宝贝，要求范围呀，关键是范围怎么求呀？
//        while (!(n >= Fun(t) && n <= Fun(t + 1))) {
//            t++;
//        }
//        int ret1 = n - Fun(t);
//        int ret2 = Fun(t + 1) - n;
//        if (ret1 >= ret2) {
//            cout << ret2 << endl;
//        }
//        else {
//            cout << ret1 << endl;
//        }
//    }
//    return 0;
//}

//#include <iostream>
//using namespace std;
//
//int main() {
//    int q, a, b, c;
//    cin >> q;
//    int ret = 0;
//    while (q--) { // 注意 while 处理多个 case
//        cin >> a >> b >> c;
//        int min = a;
//        //1.有you要先统计you的个数（要看a,b,c中最小数，在*2分）
//        //2.you统计完了，要统计oo的个数，b要先减去(a,b,c)中的最小数，这就是o的真实个数了，如果b = 0,加0分，如果o == 1,加0分，如果o == 2,加1分，如果o == 3,加2分，o == 4,加3分
//        if (b <= min)
//            min = b;
//        if (c <= min)
//            min = c;
//        ret = min * 2;
//        b = b - min;
//        if (b == 0)
//        {
//            cout<<ret<<endl;
//        }
//        else
//        {
//            ret += b - 1;
//            cout << ret << endl;
//        }
//    }
//}


//class SL{
//public:
//    /**
//     * 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
//     *
//     * 计算两个数之和
//     * @param s string字符串 表示第一个整数
//     * @param t string字符串 表示第二个整数
//     * @return string字符串
//     */
//    string solve(string s, string t) {
//        string str;
//        int next = 0;
//        int ret = 0;
//        int end1 = s.size() - 1;
//        int end2 = t.size() - 1;
//        while (end1 >= 0 || end2 >= 0)
//        {
//            int ret1 = s[end1] - '0';
//            int ret2 = t[end2] - '0';
//            ret = ret1 + ret2 + next;
//            next = ret / 10;
//            ret = ret % 10;
//            str += ret + '0';
//        }
//        if (next == 1)
//        {
//            str += '1';
//        }
//        str.reserve();
//
//
//
//    }
//};


//int main()
//{
//    string s("97");
//    string t("22");
//   
//    string str;
//    int next = 0;
//    int ret = 0;
//    int end1 = s.size() - 1;
//    int end2 = t.size() - 1;
//    while (end1 >= 0 || end2 >= 0)
//    {
//       int ret1= end1 >= 0 ? s[end1] - '0' : 0;
//       int ret2 = end2>= 0 ? t[end2] - '0' : 0;
//
//        end1--; end2--;
//        ret = ret1 + ret2 + next;
//        next = ret / 10;
//        ret = ret % 10;
//        str += ret + '0';
//    }
//    if (next == 1)
//    {
//        str += '1';
//    }
//    reverse(str.begin(),str.end());
//    cout << str;
//    return 0;
//}


//int main() {
//    int L, R;
//    int count = 0;
//    cin >> L >> R;
//    string str;
//    for (int i = L; i <= R; i++)
//    {
//        str = to_string(i);
//        int n = str.size();
//        for (int j = 0; j < n; j++)
//        {
//            if (str[j] == '2')
//            {
//                count++;
//            }
//        }
//    }
//
//    cout << count << endl;
//}

//
//#include<vector>
//int main()
//{
//	vector<string>s;
//
//	string str1,str2;
//	cin >> str1 >> str2;
//	int ret = 0;
//	for (int i = 0; i < 5; i++)
//	{
//		for (int j = 0; j < 5; j++)
//		{
//			if (s[i] = str1 && s[j] = str2)
//			{
//				if (i - j < ret)
//					ret = ;
//
//			}
//		}
//	}
//
//	return 0;
//}



//#include <iostream>
//#include <string>
//
//using namespace std;
//
//int main() {
//    string line, word;
//
//    // 使用 getline() 读取整行
//    cout << "请输入一行文本（可以包含空格）：";
//    getline(cin, line);
//    cout << "你输入的整行内容是：" << line << endl;
//
//    // 使用 while (cin >> s) 读取单词
//    cout << "请输入多个单词（用空格分隔，Ctrl+D/Z 结束）：";
//    while (cin >> word) {
//        cout << "读取到的单词是：" << word << endl;
//    }
//
//    return 0;
//}


//#include <iostream>
//#include<string>
//using namespace std;

//int main() {
//    string st1, st2;
//    cin >> st1 >> st2;
//    for (int i = 0; i < st1.size(); i++)
//    {
//        for (int j = 0; j < st2.size(); j++)
//        {
//            if (st1[i] == st2[j])
//            {
//                st1.erase(st1.begin() + i);
//            }
//        }
//    }
//    cout << st1 << endl;
//}
//typedef struct ListNode {
//	int val;
//	struct ListNode* next;
//	ListNode(int x) :
//		val(x), next(NULL) {
//	}
//}ListNode; 
//
//
//ListNode* FindFirstCommonNode(ListNode* pHead1, ListNode* pHead2) {
//	if (!pHead1 || !pHead2)
//		return nullptr;
//	//
//	ListNode* pA = pHead1;
//	int lenA = 0;
//	while (pA)
//	{
//		pA = pA->next;
//		lenA++;
//	}
//	//
//	ListNode* pB = pHead2;
//	int lenB = 0;
//	while (pB)
//	{
//		pB = pB->next;
//		lenB++;
//	}
//	//
//	pA = pHead1;
//	pB = pHead2;
//	if (lenA >= lenB)
//	{
//		while (lenA - lenB)
//		{
//			pA = pA->next;
//		}
//
//	}
//	else {
//		while (lenB - lenA)
//		{
//			pB = pB->next;
//		}
//
//	}
//	//
//	while (pA && pB)
//	{
//		if (pA == pB)
//			return pA;
//		pA = pA->next;
//		pB = pB->next;
//	}
//	return nullptr;
//}
//
//int main()
//{
//	ListNode* pHead1 = new ListNode(1);
//	ListNode* p2 = new ListNode(2);
//	ListNode* p3 = new ListNode(3);
//	ListNode* p4 = new ListNode(6);
//	ListNode* p5 = new ListNode(7);
//	pHead1->next = p2;
//	p2->next = p3;
//	p3->next = p4;
//	p4->next = p5;
//	p5->next = nullptr;
//
//	ListNode* pHead2 = new ListNode(4);
//	ListNode* ph2 = new ListNode(5);
//	ListNode* ph3 = new ListNode(6);
//	ListNode* ph4 = new ListNode(7);
//	pHead2->next = ph2;
//	ph2->next = ph3;
//	ph3->next = ph4;
//	ph4->next = nullptr;
//
//	FindFirstCommonNode(pHead1,pHead2);
//
//	
//
//}


// Student的_num和Person的_num构成隐藏关系，可以看出这样代码虽然能跑，但是⾮常容易混淆 
//class Person
//{
//protected:
//	string _name = "⼩李⼦"; // 姓名 
//	int _num = 111; // ⾝份证号 
//};
//class Student : public Person
//{
//public:
//	void Print()
//	{
//		cout << " 姓名:" << _name << endl;
//		cout << " ⾝份证号:" << _num << endl;
//		cout << " 学号:" << _num << endl;
//	}
//protected:
//	int _num = 999; // 学号 
//};
//int main()
//{
//	Student s1;
//	s1.Print();
//
//	return 0;
//};


class A

{

public:

	void f() { cout << "A::f()" << endl; }

	int a;

};



class B : public A

{

public:

	void f(int a) { cout << "B::f()" << endl; }

	int a;

};



int main()

{

	B b;

	b.f();

	return 0;

}
